<html>
<body>
<p>
    Reports overloaded function calls where an argument requires an explicit cast to resolve to a proper declaration.
    The current compiler warning (available since Kotlin 1.6.20) will become an error in Kotlin 1.8.
</p>
<p>
    Progressions and ranges types (<code>kotlin.ranges</code>) will start implementing the <code>Collection</code> interface in Kotlin
    1.9 and later. This update will cause a change in resolution for overloaded functions. For instance, in the example below, the
    <code>test(1..5)</code> call will be resolved to <code>test(t: Any)</code> in Kotlin 1.8 and earlier and to
    <code>test(t: Collection&lt;*&gt;)</code> in Kotlin 1.9 and later.
</p>
<pre><code>
  fun test(t: Any) { }
  fun test(t: Collection&lt;*&gt;) { }
  fun invoke() {
    test(1..5) // IntRange becomes Collection in 1.9
  }
</code></pre>

<p>The provided quick-fix captures the behaviour specific to the compiler of version 1.8 and earlier:</p>
<pre><code>
  fun test(t: Any) { }
  fun test(t: Collection&lt;*&gt;) { }

  fun invoke() {
    test(1..5) // resolved to 'test(t: T)' before Kotlin 1.9
  }
</code></pre>

<p>After the quick-fix is applied:</p>
<pre><code>
  fun test(t: Any) { }
  fun test(t: Collection&lt;*&gt;) { }

  fun invoke() {
    test((1..5) as Iterable&lt;Int&gt;) // resolved to 'test(t: T)' in Kotlin 1.9
  }
</code></pre>
<p>Inspection is available for the Kotlin language level starting from 1.6.</p>
</body>
</html>